package com.syedu.day20;

import com.syedu.util.InputUtil;

import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;

/**
 * @author Administrator
 * @Description 客户端套接字
 * 注意: 如果服务端没有打开,则启动客户端会抛出异常:
 * java.net.ConnectException: Connection refused: connect
 * @createTime 2022/4/12 9:48
 */
public class SocketDemo {
    public static void main(String[] args) {
        //注意: 套接字对象使用完毕后也要进行资源释放(等同于IO流)
        try (Socket socket = new Socket("127.0.0.1", 8888)) {
            /**
             *  创建客户端套接字对象
             *  参数:服务器IP地址,通信端口号
             *  IP地址表示服务器网络上的"地址",127.0.0.1或者localhost表示本机
             *  端口号0~65535,1024以下为系统占用,不要使用,1024~65535都可以使用,
             *  但是要避免和一些软件的端口冲突,例如:mysql默认端口1521,tomcat默认端口8080...,否则会出现端口冲突
             */
            //向服务端发送信息
            OutputStream outputStream = socket.getOutputStream();
            //利用桥接器把字节流转换成字符流
            PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(outputStream), true);
            while (true) {
                String input = InputUtil.getStrLine("请您输入内容:");
                if("q".equalsIgnoreCase(input)){
                    break;
                }
                //把用户输入的内容发送到服务器
                printWriter.println(input);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
